# ---
# title: 724. Find Pivot Index
# id: problem724
# author: Indigo
# date: 2021-01-28
# difficulty: Easy
# categories: Array
# link: <https://leetcode.com/problems/find-pivot-index/description/>
# hidden: true
# ---
# 
# Given an array of integers `nums`, write a method that returns the "pivot"
# index of this array.
# 
# We define the pivot index as the index where the sum of all the numbers to the
# left of the index is equal to the sum of all the numbers to the right of the
# index.
# 
# If no such index exists, we should return -1. If there are multiple pivot
# indexes, you should return the left-most pivot index.
# 
# 
# 
# **Example 1:**
# 
#     
#     
#     Input: nums = [1,7,3,6,5,6]
#     Output: 3
#     Explanation:
#     The sum of the numbers to the left of index 3 (nums[3] = 6) is equal to the sum of numbers to the right of index 3.
#     Also, 3 is the first index where this occurs.
#     
# 
# **Example 2:**
# 
#     
#     
#     Input: nums = [1,2,3]
#     Output: -1
#     Explanation:
#     There is no index that satisfies the conditions in the problem statement.
#     
# 
# 
# 
# **Constraints:**
# 
#   * The length of `nums` will be in the range `[0, 10000]`.
#   * Each element `nums[i]` will be an integer in the range `[-1000, 1000]`.
# 
# 
## @lc code=start
using LeetCode

function pivot_index(nums::Vector{Int})
    if isempty(nums)
        return 0
    end
    total = sum(nums)
    left, right = 0, total
    for i in 1:length(nums) 
        right -= nums[i]
        if left == right
            return i
        end
        left += nums[i]
    end
    return (left == nums[end]) ? length(nums) : 0
end
## @lc code=end
